<template>
  <div class="goods-hot">
    <h3>{{ titleObj[type] }}</h3>
    <!-- 商品区块 --列表
    拿到热榜数据,进行遍历渲染,
    :goods="good"  是给单个商品子组件传值
    :key="good.id" 不能渲染复杂类型,只能是字符串或者数字这种简单类型
    -->
    <goods-item v-for="good in hotList" :goods="good"  :key="good.id" />
  </div>
</template>
<script>
// 导入单个商品组件
import GoodsItem from '@/views/Category/components/goods-item'
// 导入vue函数
import { onMounted, ref } from 'vue'
// 导入 vue-router 函数
import { useRoute } from 'vue-router'
// 导入热榜API接口
import { findHotGoods } from '@/api/goods'

export default {
  name: 'GoodsHot',

  // 注册组件
  components: {
    GoodsItem
  },

  // 子接父传
  props: {
    // 热榜数据
    type: {
      type: Number,
      default: 1
    }
  },

  setup (props) {
    // 普通的js等一下,也可以提供模板使用,但是不是响应式
    const titleObj = { 1: '24小时热销榜', 2: '周热销榜', 3: '总热销榜' }

    // 定义热榜数据
    const hotList = ref([])
    // 定义获取路由实例
    const route = useRoute()
    // 定义获取热榜的方法
    const getHotList = async () => {
      const { result } = await findHotGoods({
        id: route.params.id,
        type: props.type
        // limit: 3    这里个数默认为3,就没传参
      })
      console.log('热榜数据', result)
      // 赋值
      hotList.value = result
    }

    // 挂载
    onMounted(() => {
      // 调用获取热榜数据
      getHotList()
    })

    // 返回数据
    return { titleObj, hotList }
  }
}
</script>
<style scoped lang="less">
.goods-hot {
  h3 {
    height: 70px;
    background: @helpColor;
    color: #fff;
    font-size: 18px;
    line-height: 70px;
    padding-left: 25px;
    margin-bottom: 10px;
    font-weight: normal;
  }
}
</style>
